package br.edu.delta.form;

import java.util.Calendar;
import java.util.Date;

import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;

import br.edu.delta.model.Emprestimo;
import br.edu.delta.model.Livro;
import br.edu.delta.service.ConfiguracoesService;
import br.edu.delta.util.Util;

/**
 * <p>
 * <b>Title:</b> EmprestimoForm
 * </p>
 * 
 * <p>
 * <b>Description:</b> EmprestimoForm
 * </p>
 * 
 * <p>
 * <b>Company: </b>
 * </p>
 * 
 * @author Denis
 * 
 * @version 1.0.0
 */
@SessionScoped
public class EmprestimoForm extends Formulario<Emprestimo> {

	/** Atributo serialVersionUID. */
	private static final long serialVersionUID = -1L;

	private Livro livro;

	/** Atributo service. */
	@Inject
	private ConfiguracoesService configuracoesService;

	/**
	 * Retorna o valor do atributo <code>livro</code>
	 * 
	 * @return <code>Livro</code>
	 */
	public Livro getLivro() {

		if (Util.isNull(this.livro)) {

			this.livro = new Livro();
		}

		return this.livro;
	}

	/**
	 * Define o valor do atributo <code>livro</code>.
	 * 
	 * @param livro
	 */
	public void setLivro(final Livro livro) {

		this.livro = livro;
	}

	public Date getDataDevolucao() {

		final Calendar c = Calendar.getInstance();

		c.add(Calendar.DATE, 7);

		return c.getTime();
	}

	public String getDataDevolucaoFormatada() {

		final Calendar c = Calendar.getInstance();

		c.add(Calendar.DATE, this.getConfiguracoesService().obter(1L).getQtdDiasEmprestimo());

		return Util.formatData(c.getTime(), "dd/MM/yyyy");
	}

	/**
	 * Retorna o valor do atributo <code>configuracoesService</code>
	 * 
	 * @return <code>ConfiguracoesService</code>
	 */
	public ConfiguracoesService getConfiguracoesService() {

		return configuracoesService;
	}

}
